﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
namespace ToaThuoc_PAK.Handler
{
    /// <summary>
    /// Summary description for XML_KiemTraPhanUngThuoc
    /// </summary>
    public class XML_KiemTraPhanUngThuoc : IHttpHandler
    {
        private string IDThuoc;
        private string TenThuoc;
        private string IDThuoc2;
        private string TenThuoc2;

        private string MaBN;
        private string ViewType;
        private DAL_DonThuoc dal_DonThuoc;
        public void ProcessRequest(HttpContext context)
        {
            this.IDThuoc = Factory.emptyNull(context.Request.QueryString["IDThuoc"]);
            this.TenThuoc = Factory.emptyNull(context.Request.QueryString["TenThuoc"]);
            this.MaBN = Factory.emptyNull(context.Request.QueryString["MaBN"]);
            this.IDThuoc2 = Factory.emptyNull(context.Request.QueryString["IDThuoc2"]);
            this.TenThuoc2 = Factory.emptyNull(context.Request.QueryString["TenThuoc2"]);
            this.ViewType = Factory.emptyNull(context.Request.QueryString["ViewType"]);
            dal_DonThuoc = new DAL_DonThuoc();
            if (this.IDThuoc == "")
            {
                this.IDThuoc = "0";
            }
            if (this.IDThuoc2 == "")
            {
                this.IDThuoc2 = "0";
            }
            if (this.MaBN == "")
            {
                this.MaBN = "''";
            }

            string strXML = "";
            if (this.ViewType == "1")
            {
                strXML = KiemTraPhanUngThuoc();
            }
            if (this.ViewType == "2")
            {
                strXML = KiemTraTuongTacThuoc();
            }

            context.Response.ContentType = "text/xml";
            context.Response.Write(strXML);
            context.Response.End();
        }

        private string KiemTraPhanUngThuoc()
        {
            string strXML = "<Root>" + "\n";
            string Message = "";

            try
            {
                DataTable dt = dal_DonThuoc.KiemTraPhanUngThuoc(this.MaBN, this.IDThuoc);
                if (dt.Rows.Count >= 1)
                {
                    Message = "Bệnh nhân phản ứng với thuốc " + dt.Rows[0]["TenThuoc"] + "\n" +
                              "Ghi chú: " + Factory.emptyNull(dt.Rows[0]["NoiDung"]) + "";
                    strXML += "<PUT  Mess=\"" + Message + "\"" + ">" + "\n" +
                              "</PUT>" + "\n";
                    strXML += "</Root>";
                    return strXML;
                }

                //Phản ứng thành phần hoạt chất           
                dt.Clear();
                dt = dal_DonThuoc.KiemTraThanhPhanHoatChat(this.MaBN, this.IDThuoc);
                string TenHoatChat = "";
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr = dt.Rows[i];
                    if (Message == "")
                    {
                        Message = "Bệnh nhân phản ứng với thành phần hoạt chất: ";
                    }
                    if (TenHoatChat == "")
                    {
                        TenHoatChat += Factory.emptyNull(dr["TenHoatChat"]);
                    }
                    else
                    {
                        TenHoatChat += ", " + Factory.emptyNull(dr["TenHoatChat"]);
                    }
                }
                Message += TenHoatChat;
                if (Message != "")
                {
                    strXML += "<PUT  Mess=\"" + Message + "\"" + ">" + "\n" +
                              "</PUT>" + "\n";
                    strXML += "</Root>";
                    return strXML;
                }

                //Chống chỉ định
                string ChongChiDinh = "";
                //Lấy thể trạng
                dt.Clear();
                dt = dal_DonThuoc.LayTheTrangNguoiBenh(MaBN);
                if (dt.Rows.Count > 0)
                {
                    DataRow dr = dt.Rows[0];
                    string Thai = "", Bu = "", TreEm = "";

                    Thai = Factory.toSQLBit(dr["Thai"]);
                    Bu = Factory.toSQLBit(dr["Bu"]);
                    TreEm = Factory.toSQLBit(dr["TreEm"]);

                    if (Thai == "1")
                    {
                        dt.Clear();
                        dt = dal_DonThuoc.ChongChiDinhTheoTheTrangNguoiBenh("Thai", this.IDThuoc);
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            dr = dt.Rows[i];
                            ChongChiDinh += Factory.emptyNull(dr["TenHoatChat"]) + ": " + Factory.emptyNull(dr["ChongChiDinh"]) + "\n";
                        }
                        if (ChongChiDinh != "")
                        {
                            Message = "Bệnh nhân có 'Thai' Chống chỉ định với thành phần hoạt chất của Thuốc:" + "\n";
                            Message += ChongChiDinh;
                            strXML += "<PUT  Mess=\"" + Message + "\"" + ">" + "\n" +
                                      "</PUT>" + "\n";
                            strXML += "</Root>";
                            return strXML;
                        }
                    }

                    if (Bu == "1")
                    {
                        dt.Clear();
                        dt = dal_DonThuoc.ChongChiDinhTheoTheTrangNguoiBenh("Bu", this.IDThuoc);
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            dr = dt.Rows[i];
                            ChongChiDinh += Factory.emptyNull(dr["TenHoatChat"]) + ": " + Factory.emptyNull(dr["ChongChiDinh"]) + "\n";
                        }
                        if (ChongChiDinh != "")
                        {
                            Message = "Bệnh nhân 'cho con Bú' Chống chỉ định với thành phần hoạt chất của Thuốc:" + "\n";
                            Message += ChongChiDinh;
                            strXML += "<PUT  Mess=\"" + Message + "\"" + ">" + "\n" +
                                      "</PUT>" + "\n";
                            strXML += "</Root>";
                            return strXML;
                        }
                    }

                    if (TreEm == "1")
                    {
                        dt.Clear();
                        dt = dal_DonThuoc.ChongChiDinhTheoTheTrangNguoiBenh("TreEm", this.IDThuoc);
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            dr = dt.Rows[i];
                            ChongChiDinh += Factory.emptyNull(dr["TenHoatChat"]) + ": " + Factory.emptyNull(dr["ChongChiDinh"]) + "\n";
                        }
                        if (ChongChiDinh != "")
                        {
                            Message = "Bệnh nhân là 'Trẻ Em' Chống chỉ định với thành phần hoạt chất của Thuốc:" + "\n";
                            Message += ChongChiDinh;
                            strXML += "<PUT  Mess=\"" + Message + "\"" + ">" + "\n" +
                                      "</PUT>" + "\n";
                            strXML += "</Root>";
                            return strXML;
                        }
                    }
                }
            }
            catch (Exception)
            {

            }
            strXML += "<PUT  Mess=\"" + "" + "\"" + ">" + "\n" +
                      "</PUT>" + "\n";
            strXML += "</Root>";
            return strXML;
        }

        private string KiemTraTuongTacThuoc()
        {
            string strXML = "<Root>" + "\n";

            int i, j;
            DataTable dtHoatChat1 = new DataTable();
            DataTable dtHoatChat2 = new DataTable();

            dtHoatChat1 = dal_DonThuoc.KiemTraTuongTacThuoc(this.IDThuoc);
            dtHoatChat2 = dal_DonThuoc.KiemTraTuongTacThuoc(this.IDThuoc2);
            //Kiem Tra Tương Tác Từng Thành Phần Hoạt Chất
            try
            {
                for (i = 0; i < dtHoatChat1.Rows.Count; i++)
                {
                    DataRow dr1 = dtHoatChat1.Rows[i];
                    for (j = 0; j < dtHoatChat2.Rows.Count; j++)
                    {
                        DataRow dr2 = dtHoatChat2.Rows[j];
                        string ChuThich = Factory.emptyNull(dal_DonThuoc.LayChuThichThuoc(dr1["IDHoatChat"].ToString(), dr2["IDHoatChat"].ToString()));
                        if (ChuThich != "")
                        {
                            ChuThich = "Thuốc ~b" + this.TenThuoc + "b~ có thành phần hoạt chất ~i~u" + dr1["TenHoatChat"].ToString() + "i~u~ " +
                                       "tương tác với thành phần hoạt chất ~i~u" + dr2["TenHoatChat"] + "i~u~ của thuốc ~b" + this.TenThuoc2 + "b~ " + "~n" +
                                       "~n~bChú thích:b~ " + ChuThich + "~n~hr";
                            strXML += "<PUT  Mess=\"" + ChuThich + "\"" + ">" + "\n" +
                                      "</PUT>" + "\n";
                            strXML += "</Root>";
                            return strXML;
                        }
                    }
                }
            }
            catch (Exception)
            {

            }

            strXML += "<PUT  Mess=\"" + "" + "\"" + ">" + "\n" +
                      "</PUT>" + "\n";
            strXML += "</Root>";
            return strXML;
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}